<?php
/**
 * View_Special_Unit
 *
 * Класс View_Special_Unit отвечает за вывод информации, связанной с юнитами
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Special_Unit extends View_Base {
	
	/**
	 * Выводит список юнитов, которые могут быть изучены
	 * 
	 * @param array $arrUnitsStatuses - список юнитов
	 */
	public static function showListCouldBeResearch(array $arrUnitsStatuses) {
		$i = 0;
		$objGeneral = Game_General::instance();
		
		foreach ($arrUnitsStatuses as $objUnitStatus) {
			if ($objUnitStatus->isResearched() || $objUnitStatus->isResearchingNow()) continue;
			$unitId = $objUnitStatus->getUnitId();
			$arrBuildingsUnperformedDependences = $objUnitStatus->getBuildingsUnperformedDependences();
			$isNeedMoreBuildings = !empty($arrBuildingsUnperformedDependences);
			if ($i++) echo '<p>============================</p>';
			echo '<p>';
				if (
					!$isNeedMoreBuildings && 
					$objGeneral->objPlace->objResourcesWithProduction->isEnoughResources($objUnitStatus->getResearchCost()->objResources) &&
					!Game_Event_Research::isPlaceEventExist($unitId) &&
					!$objGeneral->objPlace->hasResearchEvents()
				) {
					echo '<a href="?research=' . $unitId . '">';
						echo Game_Unit::getUnitName($unitId);
					echo '</a>';
				}
				else echo '<span>' . Game_Unit::getUnitName($unitId) . '</span>';
				$objResourcesCost = new Game_Resource($objUnitStatus->getResearchCost());
				$buildingTime = $objUnitStatus->getResearchTime();
				View_Special_Resource::showCost($objResourcesCost, $buildingTime);
				
				if ($isNeedMoreBuildings) {
					echo '<p>';
						echo '<b>' . Service_Translate::getText('Требуется построить') . '</b>: ';
						$k = 0;
						foreach ($arrBuildingsUnperformedDependences as $arrNeedToBuild) {
							if ($k++) echo ', ';
							echo Game_Building::getBuildingName($arrNeedToBuild['ID_building_need']) . ' ' . $arrNeedToBuild['level'];
						}
					echo '</p>';
				}
				
			echo '</p>';
		}
	}
	
	/**
	 * Выводит список юнитов, которые возможно построить
	 * 
	 * @param array $arrUnitsStatuses
	 * @param Game_PlaceBuilding $objPlaceBuiding
	 * @param int $militaryBuildingType
	 */
	public static function showListCouldBeCreate(array $arrUnitsStatuses, Game_PlaceBuilding $objPlaceBuiding, $militaryBuildingType) {
		$i = 0;
		$arrUnitsObjects = array();
		foreach ($arrUnitsStatuses as $objUnitStatus) {
			if (!$objUnitStatus->isResearched()) continue;
			$arrUnitsObjects[] = new Game_Unit($objUnitStatus->getUnitId());
		}
		
		if ($arrUnitsObjects) {
			echo '<div class="panel panel-default"><div class="panel-body"><form method="post" action="build.php" name="snd">';
				foreach ($arrUnitsObjects as $objUnit) {
					self::_showUnitBuildingBlock($objUnit);
				}
				echo '<button type="submit" class="btn btn-primary">' . Service_Translate::getText('Обучить') . '</button>';
			echo '</form></div></div>';
		}
		else {
			echo '<p>' . Service_Translate::getText('В данный момент нельзя построить новые юниты, попробуйте провести исследования') . '</p>';
		}
	}
	
	/**
	 * Выводит предложение по строительству конкретного юнита
	 * 
	 * @param Game_Unit $objUnit
	 */
	private static function _showUnitBuildingBlock(Game_Unit $objUnit) {
		$objGeneral = Game_General::instance();
		echo '<div class="well">';
			echo '<span>' . $objUnit->getName() . '</span>';
			$buildingTime = $objUnit->getPlaceBuildingTime();
			View_Special_Resource::showCost($objUnit->objResources, $buildingTime);
			echo '<span>' . Service_Translate::getText('Обучить') . '</span>';
			echo '<input class="form-control input-number input-sm" type="text" name="cu[' . $objUnit->id . ']" value="0" maxlength="4" />';
			echo '<span>/ </span>';
			echo '<span>' . $objGeneral->objPlace->objResourcesWithProduction->howManyTimesEnoughResources($objUnit->objResources) . '</span>';
		echo '</div>';
	}
	

}
?>